Top 10k strings from Font Edit (19xx)(-)[b].z80
in <root> / bin / z80 / software / Sinclair Spectrum Collection TOSEC.exe / Sinclair ZX Spectrum - Utilities & Educational / Sinclair ZX Spectrum - Utilities & Educational - [Z80] (TOSEC-v2007-01-01) /
Back to the directory listing
10 A,(CURCHR) 7 A,(CHRSZE) 4 A,(Y_COOR) 4 A,(X_COOR) 4 (Y_COOR),A 4 (X_COOR),A 3 A,(IX+#00) 3 ; Yep, so return 3 (IX+#00),A 2 ; wide char? 2 ; rotate bit pattern 2 ; repeat for rest of line 2 ; YEP, multiply with 16 2 ; Upper left corner of grid on screen 2 ; Scan keys b-space 2 ; Retrieve old start position 2 ; Retrieve counter 2 ; Next byte in pattern 2 ; If not finished, do next line 2 ; IX=address of char, BC=number of bytes 2 ; Get size of char 2 ; Find addr of next screen position 2 ; Do one line 2 (CURCHR),A 2 (CHRSZE),A 1 byte 2 byte 3 1 byte 14 byte 15 byte 30 byte 31 1 byte 0 byte 1 1 NZ,CHK_END 1 NZ, MENUG1 1 E,(IX+#00) 1 AT, #4, #15 1 AT, #12, #12 1 AT, #11, #12 1 AT, #10, #12 1 AT, #0F, #12 1 AT, #0E, #12 1 AT, #0D, #12 1 AT, #0C, #12 1 AT, #0B, #12 1 AT, #0A, #12 1 AT, #09, #12 1 AT, #08, #12 1 AT, #07, #12 1 AT, #06, #12 1 AT, #03, #15 1 AT, #01, #06 1 AT, #00, #08 1 ; xor this pixel value with previous 1 ; wrap around when right edge reached 1 ; width = width - 8 1 ; wide char 1 ; well then it must be 16x16, and then multiply with 32 1 ; we can just test in one flow, since MOVES won't allow e.g O/P pressed 1 ; use B as counter 1 ; update width counter 1 ; turn on flash of that square 1 ; turn on cursor 1 ; turn off flash of that square 1 ; to get the start address, use A-65536*INT(A / 65536) 1 ; the sides 1 ; tall char? 1 ; single width char 1 ; returns the attribute address for current x,y in HL 1 ; return result in A 1 ; reset cursor pos. 1 ; print char to the right of the grid 1 ; print char in the frame 1 ; now xor the pixel-value 1 ; now find the right bit 1 ; not Q=up 1 ; not P=right 1 ; not O=left 1 ; not A=down 1 ; no moves, just jump back to go around again 1 ; next pixel 1 ; jump back for last 4 pixels, if neccesary 1 ; high char 1 ; high bit E into CARRY 1 ; first check for SPACE 1 ; fill with 2 zero bits 1 ; e.g: LET A=USR xxxxx 1 ; current size of the characters. 1 ; continue for tall char 1 ; calculate address for next row in d_file 1 ; and to get last used char size, use INT(A / 65536) 1 ; and the char in temporary store 1 ; and show what's in the temporary store 1 ; and print the chars below 1 ; and once more 1 ; and jump back to fetch data for column 1 ; Yep, so add 96 to starting char 1 ; Yellow paper 1 ; YES, SO JUMP TO END 1 ; YEP, multiply with 8 1 ; Where to find the grid pattern 1 ; When returning to BASIC the BC-register contains the value :- 1 ; When copying chars from the rom, they will be expanded to match the 1 ; What to do? 1 ; What size? 1 ; What does the char data says? 1 ; Well, first draw something 1 ; Well then it must be 8x8 bit 1 ; We now have the 'grey' pattern in TMPSTO 1 ; WAS BIT-8 SET? 1 ; Use size 0=8x8 bit 1 ; Use C as nibble counter 1 ; Use C as 'height' counter 1 ; Use B as height counter 1 ; Upper bar 1 ; Update height counter 1 ; UPDATE TEXT-POINTER 1 ; Title message 1 ; This part tests the keys 6-0 for action 1 ; This part tests the keys 1-5 for action 1 ; This part test for the cursor movement keys and returns result in A 1 ; This part handles the symbol shift functions 1 ; This font/sprite editor supports the following size of images: 1 ; These functions turns the editing cursor on/off 1 ; The coordinates for editing cursor 1 ; The character we are working on 1 ; The bit was set, so jump 1 ; Test the keys 6-0 1 ; Test the keys 1-5 1 ; Test for cursor movement keys 1 ; Store new attribute 1 ; Starts with space 1 ; Starting char is 1 ; Starting address in D_FILE for first char 1 ; Start with editing 'SPACE' 1 ; Skip return address 1 ; Skip data-area 1 ; Show current char in full size 1 ; Show current ascii number and 'Spectrum' character 1 ; Show 11 chars 1 ; Scan the keys 6-0 1 ; Scan keys y-p 1 ; Scan keys q-t 1 ; Scan keys h-enter 1 ; Scan keys caps-v 1 ; Scan keys a-g 1 ; Scan keys 6-0 1 ; Scan keys 1-0 1 ; Save screen position 1 ; Save d_file address 1 ; SYMBOL SHIFT pressed 1 ; STORES CURRENT CHAR IN TEMPORARY MEMORY 1 ; SPACE pressed? 1 ; SPACE pressed so skip the test for CAPS 1 ; SHOWS SOME CHARS AT THE LOWER LINES 1 ; SHOW THE MAIN SCREEN 1 ; Reset the cursor position 1 ; Reset pattern pointer? 1 ; Reset movement result 1 ; Reset bit=WHITE PAPER 1 ; RETURNS TO BASIC 1 ; RETURN ADDRESS=TEXT 1 ; RETRIEVE FROM TEMPORARY STORE TO CURRENT CHAR 1 ; Q pressed to skip the test for down=A 1 ; Print char in the grid 1 ; Preserve lower 2 bits 1 ; Preserve BRIGHT and INK, and use black PAPER 1 ; Place the font-data after the code 1 ; PRINT THE CHAR IN 'A' AT ADDRESS 'HL' IN D_FILE 1 ; PRINT CURRENT CHAR IN THE GRID AND INFORM USER OF CURRENT ASCII NUMBER 1 ; PRINT A MESSAGE, LAST CHARACTER WITH BIT 7=1 1 ; P=right? 1 ; P pressed so skip the test for left=O 1 ; OPEN "S" CHANNEL 1 ; Now HL=d_file, BC=size, IX=address 1 ; No, so continue 1 ; Next screen square in the line 1 ; Next column in the wide char 1 ; Misc info 1 ; Menu options 1 ; MISC CONTROL-CODES FOR PRINTING 1 ; MASK OUT EVENTUALLY HIGH-BIT 1 ; MAIN ENTRY 1 ; Lower bar 1 ; If the bit was 0, then no bright 1 ; If '9' pressed change char size 1 ; If '0' pressed then return to basic 1 ; IS CALLED THIS WAY: CALL PRINTM 1 ; INVERSE THE CURRENT CHAR 1 ; INITALIZE SOME VARIABLES 1 ; Here starts the keyboard scanning 1 ; HL=addr in ROM 1 ; HERE COMES THE KEY-SCANNING ROUTINES 1 ; Get size in BC 1 ; Get current attribute of pixel 1 ; GET CURRENT CHAR FROM THE ROM 1 ; GET CHAR. TO PRINT 1 ; GET ALL CHARS FROM ROM 1 ; Freeware 1994 by Thomas Kjaer, [email protected] 1 ; For testing with DEVPAC 1 ; For temporary store of a character 1 ; For Spectrum 48K/128K/128K +2/+3/+2A 1 ; For Ax8, size 0 1 ; For Ax32, size 3 1 ; For Ax16, size 2 & 1 1 ; Fetch from pattern 1 ; Fetch from char 1 ; Fetch address of current char 1 ; Fetch addr of current char, return address in IX 1 ; FONT-EDITOR v2.0 1 ; FINDS THE IX=ADDRESS OF CURRENT CHAR & BC=SIZE IN BYTES 1 ; FIND SIZE OF CHAR, RETURN WITH BC=WIDTH, HEIGHT 1 ; ELSE bright on, for this square 1 ; Draw the grid, at the right size 1 ; Draw attribute box around current character 1 ; Do the grid pattern 1 ; Do all rows 1 ; DE=ADDRESS OF PROGRAM CONTINUATION 1 ; DATA AND VARIABLES 1 ; Current size of chars 1 ; Check for wide chars 1 ; Check for wide char 1 ; CL_ALL, CLEAR SCREEN 1 ; CLEAR THE GRID AND THE CHAR 1 ; CHANGE SIZE OF THE CHARS BY CYCLING THROUGH THE SIZES 1 ; CARRY into low bit A 1 ; CAPS pressed? 1 ; Below 32? 1 ; BASE ADDR FOR SPACE 1 ; B=width, C=height 1 ; B=width, C=Height 1 ; Assemble with Hisoft's DEVPAC : A,2000 1 ; ASCII +/- 8/1 1 ; AND PRINT IT 1 ; 8x8 bit=0 1 ; 8x16 bit? 1 ; 8 bits wide, just store it 1 ; 65536*char_size+start_address_of_char_data 1 ; 5 Chars to the left of current 1 ; 4 pixels at a time in ROM char 1 ; 2nd column in wide chars 1 ; 2nd column 1 ; 16x8 bit? 1 ; 16x16 bit? 1 ; 'SS+Y' = ASCII + 8 1 ; 'SS+T' = ASCII + 1 1 ; 'SS+R' = ASCII - 1 1 ; 'SS+E' = ASCII - 8 1 ; '8' = ALL CHARS FROM ROM 1 ; '7' = CURRENT CHAR FROM ROM 1 ; '6' = GET FROM TEMPORARY STORE 1 ; '5' = STORE 1 ; '4' = FLIP HORIZONTAL 1 ; '3' = FLIP VERTICAL 1 ; '2' = INVERSE 1 ; '1' = CLEAR 1 ; DEFM "Message" 1 ; DEFB "s"+#80 1 ; CODE CONTINUES HERE 1 8x16 bit=1 1 16x8 bit=2 1 (PRT_NO),A 1 (IX+#00),E 1 #FF,#81,#81,#81,#81,#81,#81,#FF 1 #AA,#55,#AA,#55,#AA,#55,#AA,#55 1 #55,#AA,#55,#AA,#55,#AA,#55,#AA 1 #00, AT, #4, #15+#80 1 "SYMB SHIFT:-" 1 "SPC :Set/Reset" 1 "R/T :Ascii +/-" 1 "OPQA:Roll line" 1 "OPQA:Roll char" 1 "OPQA:Movement" 1 "FONT-EDITOR v1.0" 1 "E/Y : '' +/- " 1 "ASCII M" 1 "9:Size 0:End" 1 "7:Rom 8:Roms" 1 "5:Sto 6:Get" 1 "3:FlpV 4:FlpH" 1 "1:Clr 2:Inv" 1 "(p)-94 Thomas Kjae" 1 byte 2 byte 3 1 byte 0 byte 1 1 16x16 bit=3 1 .... .... 1 .... .... 1 RST 1 PUSH 1 LD 1 JR 1 INC 1 BIT